Inicio / Git / Bases de Git / Staging Area y Commits (Teórico)
Teoría

Staging Area y Commits

Teórico — Los 3 estados de un archivo en Git y cómo registrar cambios permanentemente.

01 Los 3 estados de un archivo

En Git, cada archivo de tu proyecto puede estar en uno de tres estados. Entender esto es clave para usar Git correctamente:

Modified

Has cambiado el archivo pero no lo has marcado para el próximo commit. Git sabe que cambió pero no lo incluirá.

Staged

Marcaste el archivo para que se incluya en el próximo commit. Está en la "staging area" (área de preparación).

Committed

El archivo está guardado permanentemente en el historial de Git. Es una "foto" del estado del proyecto.

Analogía: Imagina que estás preparando una caja de envío. Modified = cambiaste algo en tu escritorio. Staged = lo metiste en la caja. Committed = sellaste la caja y la enviaste. Puedes meter y sacar cosas de la caja antes de sellarla.

02 El flujo de trabajo básico

El ciclo típico de trabajo con Git sigue estos pasos:

Ciclo: editar → stage → commit

Terminal
# 1. Editas archivos (con tu editor de texto)
#    → Los archivos pasan a estado "Modified"

# 2. Agregas los cambios al staging area
git add archivo.txt

# 3. Confirmas los cambios (creas un commit)
git commit -m "Descripción de qué cambió"
¿Por qué existe el staging area?
Porque te permite elegir qué cambios incluir en cada commit. Si cambiaste 5 archivos pero solo 2 están listos, puedes hacer git add solo de esos 2 y hacer un commit limpio. Los otros 3 seguirán como "modified".

03 git add — Preparar archivos

El comando git add mueve archivos del estado modified al estado staged. Tiene varias formas de uso:

Formas de usar git add

Terminal
# Agregar UN archivo específico
git add index.html

# Agregar VARIOS archivos
git add index.html styles.css

# Agregar TODOS los archivos modificados
git add .

# Agregar todos los archivos de una carpeta
git add src/
git add . (con punto) agrega todo lo que cambió. Es la forma más rápida, pero ten cuidado de no incluir archivos que no quieres (como configuraciones locales o archivos temporales). Para eso existe .gitignore.

04 git commit — Guardar cambios

Un commit es una "fotografía" del estado de tu proyecto en un momento específico. Cada commit tiene:

  • Hash único — un identificador como a3b8d1b
  • Autor — quién hizo el cambio (tu nombre y email configurados)
  • Fecha — cuándo se hizo
  • Mensaje — descripción de qué cambió y por qué
  • Contenido — los archivos que estaban en el staging area

Sintaxis de git commit

Terminal
# Commit con mensaje inline (la forma más común)
git commit -m "Agrega página de inicio"

# Commit con mensaje largo (abre el editor)
git commit

# Shortcut: add + commit en un solo paso (solo archivos ya rastreados)
git commit -am "Actualiza estilos del navbar"
Buenos mensajes de commit: Escribe mensajes claros y descriptivos. Usa presente imperativo: "Agrega...", "Corrige...", "Elimina...". Evita mensajes como "cambios" o "arreglos varios" — tu yo del futuro te lo agradecerá.

05 git status y git log

git status
Muestra el estado actual: qué archivos están modificados, cuáles están en staging, y cuáles no están rastreados. Usa este comando constantemente para saber dónde estás.
git log
Muestra el historial de commits. Cada entrada tiene el hash, autor, fecha y mensaje. Para una vista resumida: git log --oneline.
git diff
Muestra exactamente qué líneas cambiaron en los archivos modificados. git diff --staged muestra los cambios que ya están en staging.

Cuestionario de evaluación

Pon a prueba lo que aprendiste sobre staging, commits y el flujo de Git.

1. ¿Cuáles son los 3 estados de un archivo en Git?

2. ¿Qué hace git add .?

3. ¿Qué información contiene un commit?

4. ¿Para qué existe el staging area?

5. ¿Qué comando muestra el historial de commits de forma resumida?